<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // let obj = {
        //     a:12,
        //     b:5
        // }

        // for of 遍历对象

        // Uncaught TypeError: obj is not iterable
        // for(let item of obj){
        //     console.log(item);
        // }


        // for of不能直接用到obj上面
        // let obj = {
        //     a:12,
        //     b:5
        // }

        // 自定义了一个symbol.iterator函数
        // Object.prototype[Symbol.iterator] = function(){
        //     return {
        //         next(){
        //             return {
        //                 value:"aaa",
        //                 done:false //false 永远不会变成true，所以会产生死循环
        //             }
        //         }
        //     }
        // }


        let obj = {
            a:12,
            b:5
        }


        // value 要找到对象当中对应的值
        // Object.prototype[Symbol.iterator] = function(){
        //     // console.log(this); //{a: 12, b: 5}
        //     // console.log(this.a);
        //     let index = 0;
        //     // 如何拿到属性列表
        //     let arr = Object.keys(this); 
        //     // console.log(arr); //["a","b"]
        //     return {
        //         next:()=>{
        //             index++;
        //             return {
        //                 value:this[arr[index-1]],
        //                 // 判断条件
        //                 done:index>arr.length
        //             }
        //         }
        //     }
        // }


        Object.prototype[Symbol.iterator] = function(){
            // console.log(this); //{a: 12, b: 5}
            // console.log(this.a);
            let index = 0;
            // 如何拿到属性列表
            let arr = Object.keys(this); 
            // console.log(arr); //["a","b"]
            return {
                next:()=>{
                    return {
                        value:[this[arr[index]],arr[index]],
                        // 判断条件
                        done:index++>=arr.length
                    }
                }
            }
        }
        

        for(let [item,key] of obj){ 
            console.log(item,key);
        }

    </script>
</body>
</html>